<?php
namespace Controller;
require_once ("RegistrationView.php");
require_once ("RegistrationHandler.php");

class RegistrationController {
	
	
	private $errorArray = array(); //array med fel som händer

	

	public function DoControll($db) { //alla kontroller
		$rv = new \View\RegistrationView;
		$rh = new \RegistrationHandler($db);
		$html = '';
		$error = false;
		
		if($rv->TriedToRegister()){
			if(!$rh->CheckBDate($rv->GetBDate())){ //om det sker ett fel i registreringen...
				array_push($this->errorArray, \RegistrationHandler::BDATE_WRONG_FORMAT); //pushar vi in ett felmeddelande i arrayen
				$error = true;
			}
			if(!$rh->CheckUsername($rv->GetUsername())){
				array_push($this->errorArray, \RegistrationHandler::USERNAME_TAKEN);
				$error = true;
			}
			if(!$rh->CheckUsernameLength($rv->GetUsername())){
				array_push($this->errorArray,\RegistrationHandler::USERNAME_LENGTH);
				$error = true;
			}
			//TODO: Flytta denna kotroll till en vyfunktion istället för modellfunktion
			if(!$rh->CheckPasswords($rv->GetPassword(), $rv->GetPasswordTwo())){
				array_push($this->errorArray,\RegistrationHandler::PASS_NOT_MATCH);
				$error = true;
			}
			if(!$rh->CheckPasswordLength($rv->GetPassword())){
				array_push($this->errorArray,\RegistrationHandler::PASS_LENGTH);
				$error = true;
			}
			if(!$rh->CheckUsernameChars($rv->GetUsername())){
				array_push($this->errorArray,\RegistrationHandler::USERNAME_CHARACTERS);
				$error = true;
			}
			
			if($error){ //finns det fel...
				$html .= $rv->addErrors($this->errorArray); //så kör vi addErrors från vyn
			} else{
				$rh->addUser($rv->GetRealname(), $rv->GetBDate(), $rv->GetUsername(), $rv->GetPassword()); //annars lägger vi till användaren
			}
		}
		
		$html .= $rv->DoRegistrationBox();
		
		return $html;
	}


}
?>